import logging
from logging.handlers import TimedRotatingFileHandler  # 导入按时间切割的处理器

# 1. 创建日志器
logger = logging.getLogger("AutoTestLogger")
logger.setLevel(logging.DEBUG)

# 2. 创建按时间切割的文件处理器（每分钟生成一个新文件，保留3个历史文件）
file_handler = TimedRotatingFileHandler(
    "auto_test.log",          # 日志文件名
    when="M",                 # 切割周期：'M'表示分钟（可选：S秒、H小时、D天、W0-W6周）
    interval=1,               # 切割间隔：1个周期（即1分钟）
    backupCount=3,            # 保留历史文件数量，超过会自动删除最早的文件
    encoding="utf-8"          # 指定文件编码，避免中文乱码
)

# 3. 设置日志格式
formatter = logging.Formatter(
    "%(asctime)s - %(levelname)s - %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S"
)
file_handler.setFormatter(formatter)

# 4. 将处理器添加到日志器
logger.addHandler(file_handler)

# 5. 输出日志模拟业务场景
import time  # 导入time模块，用于生成时间间隔

for i in range(5):
    logger.info(f"这是第{i+1}条测试日志")
    time.sleep(30)  # 每隔30秒输出一条日志，1分钟后触发文件切割

# 输出结果：
# 1分钟后，当前目录下会生成类似：
# auto_test.log         （最新日志文件）
# auto_test.log.2025-05-28_14-00-00 （第1个历史文件，按切割时间命名）
# 保留最近3个历史文件，旧文件自动删除